home *** CD-ROM | disk | FTP | other *** search
- /* ******************************************************************************************** */
- /* * * */
- /* * "MPW C 3.0" Version * */
- /* * * */
- /* ******************************************************************************************** */
-
- #ifndef _standard_h_
-
-
- /* ******************************************************************************************** */
- /* * * */
- /* * The definitions that follow are what is considered to be the standard UNIX * */
- /* * definitions. * */
- /* * * */
- /* ******************************************************************************************** */
-
-
-
- typedef Boolean boolean;
-
- /*
- ** Abbreviated type Definitions
- */
-
- typedef unsigned char uchar;
- typedef unsigned short ushort;
- typedef unsigned int uint;
- typedef unsigned long ulong;
-
- /*
- ** Coverup a Compiler Hole
- */
-
- #define _LINE_ 0
- #define _FILE_ "????"
-
-
- /* ******************************************************************************************** */
- /* * * */
- /* * Clister definitions. * */
- /* * * */
- /* ******************************************************************************************** */
-
- #ifndef _EJECT
- #define _EJECT
- #endif _EJECT
-
- #ifndef _PAGE
- #define _PAGE
- #endif _PAGE
-
- #ifndef _SPACE
- #define _SPACE(line_count)
- #endif _SPACE
-
- #ifndef _TITLE
- #define _TITLE(title_string)
- #endif _TITLE
-
- #ifndef _SUBTITLE
- #define _SUBTITLE(subtitle_string)
- #endif _SUBTITLE
-
-
- /* ******************************************************************************************** */
- /* * * */
- /* * The definitions that follow are extensions to the "normal" UNIX definitions. To * */
- /* * allow maximum compatability, iff "uxix" is defined, the definitions that follow * */
- /* * will not be included. * */
- /* * * */
- /* ******************************************************************************************** */
-
- #ifndef unix
-
- /*
- ** Boolean and Special Functions
- */
-
- #define and && /* Boolean "and" */
- #define or || /* Boolean "or" */
- #define not ! /* Boolean "not" */
- #define mod % /* Modular Division */
-
- /*
- ** Logical Functions
- */
-
- #define bit_and & /* Logical (bit) "and" */
- #define bit_or | /* Logical (bit) "or" */
- #define bit_eor ^ /* Logical (bit) "eor" */
- #define bit_not ~ /* Logical (bit) "not" */
-
- /*
- ** Null Pointers
- */
-
- #undef NULL
- #define NULL ((char *) 0) /* Null String Pointer */
- #define NIL ((void *) 0) /* Generalized Null Pointer */
-
- /*
- ** Character / String Constants
- */
-
- #define EOS '\0' /* end-of-string terminator */
-
- /*
- ** Convenient Coding Macros
- */
-
- #define forever for(;;)
-
- #define iter(i,max) for(i=0;i<max,i++)
-
- #define repeat do
- #define until(x) while(!(x))
-
- #define ifnot(x) if(!(x))
-
- #define abs(a) (((a)>0)?(a):(-a)) /* caution - side effects */
- #define max(a,b) (((a)>(b))?(a):(b)) /* caution - side effects */
- #define min(a,b) (((a)<(b))?(a):(b)) /* caution - side effects */
-
- /* Returns number of elements in an array */
-
- #define countof(a) (sizeof(a)/sizeof((a)[0]))
-
- /* Returns a pointer to the first element in an array */
-
- #define startp(a) (&(a)[0])
-
- /* Returns a pointer to the last element in an array */
-
- #define endp(a) (&(a)[(sizeof(a)/sizeof((a)[0]))-1])
-
- /* Returns an offset within a typedef to a member of the typedef */
-
- #define offsetof(typedef,member) ((long)&(((typedef*)0)->member))
-
- /* +------------------------------------------------------------------------------------------+ */
- /* | | */
- /* | The following character handling macros parallel the ANSI-C character handling | */
- /* | functions defined in <ctype.h>. These macros may be more efficient than subroutine | */
- /* | calls, but have the drawback of having side effects ( is_digit(*p++) will increment | */
- /* | p twice ). To avoid conflict with the ANSI-C functions, these macros have an '_' | */
- /* | character in their names; the ANSI-C functions have no '_' characters. | */
- /* | | */
- /* +------------------------------------------------------------------------------------------+ */
-
- #define to_upper(x) ((((x)>='a')&&((x)<='z'))?((x)+'A'-'a'):(x))
- #define to_lower(x) ((((x)>='A')&&((x)<='Z'))?((x)+'a'-'A'):(x))
-
- #define is_upper(x) (((x)>='a')&&((x)<='z'))
- #define is_lower(x) (((x)>='A')&&((x)<='Z'))
- #define is_alpha(x) (is_upper(x)||is_lower(x))
- #define is_digit(x) (((x)>='0')&&((x)<='9'))
- #define is_alnum(x) (is_upper(x)||is_lower(x)||is_digit(x))
- #define is_xdigit(x) ((((x)>='0')&((x)<='9'))||(((x)>='a')&((x)<='f'))||(((x)>='A')&((x)<='F')))
- #define is_space(x) (((x)==' ')||((x)=='\f')||((x)=='\n')||((x)=='\r')||((x)=='\t')||((x)=='\v'))
-
- /*
- ** Routine / Variable Descriptions
- */
-
- #define global extern
- #define import extern
- #define export
- #define internal static
- #define local static
-
- /*
- ** Prioritized General Register Assignments
- */
- #define register_01 register
- #define register_02 register
- #define register_03 register
- #define register_04 register
- #define register_05 register
- #define register_06
- #define register_07
- #define register_08
-
- /*
- ** Prioritized Data Register Assignments
- */
- #define register_D01 register
- #define register_D02 register
- #define register_D03 register
- #define register_D04 register
- #define register_D05 register
- #define register_D06
- #define register_D07
- #define register_D08
-
- /*
- ** Prioritized Address (Pointer) Register Assignments
- */
- #define register_A01 register
- #define register_A02 register
- #define register_A03
- #define register_A04
- #define register_A05
- #define register_A06
- #define register_A07
- #define register_A08
-
-
- /*
- ** Standard Type Definitions
- */
-
- typedef unsigned char u_int_08;
- typedef unsigned int u_int_16;
- typedef unsigned long int u_int_32;
-
- typedef char s_int_08;
- typedef int s_int_16;
- typedef long int s_int_32;
-
- /*
- ** Standard Coercion Definitions
- */
-
- typedef union {
- char _char; /* character */
- int _int; /* integer */
- short _short; /* short */
- long _long; /* long */
- int _i; /* alternate integer */
- short _s; /* alternate short */
- uchar _uchar; /* unsigned character */
- uint _uint; /* unsigned integer */
- ushort _ushort; /* unsigned short */
- ulong _ulong; /* unsigned long */
- void *_p; /* pointer */
- ulong _a; /* address */
- s_int_08 _s_int_08; /* signed 8-bit integer */
- s_int_16 _s_int_16; /* signed 16-bit integer */
- s_int_32 _s_int_32; /* signed 32-bit integer */
- u_int_08 _u_int_08; /* unsigned 8-bit integer */
- u_int_16 _u_int_16; /* unsigned 8-bit integer */
- u_int_32 _u_int_32; /* unsigned 8-bit integer */
- } any;
-
- /*
- ** Standard Byte Re-ordering Functions
- */
-
- #define hton_08(x) (x)
- #define hton_16(x) (x)
- #define hton_32(x) (x)
-
- #define ntoh_08(x) (x)
- #define ntoh_16(x) (x)
- #define ntoh_32(x) (x)
-
- /*
- ** Boundary Alignment
- */
-
-
- /*
- ** Run-Time Assert
- */
-
- #ifndef DA
- #define assert(exp) \
- if ( ! ( exp ) ) { \
- printf ("assert failed: line = '%d'; file = '%s' \n",\
- _LINE_, _FILE_ ); \
- printf (" expression = '%s' \n", \
- "exp" ); \
- ExitToShell ( ); \
- }
- #else
- #define assert(exp)
- #endif
-
- #ifdef NDEBUG
- #undef assert
- #define assert(exp) \
- #endif
-
-
- /*
- ** Compile-Time Assert - Generates "Illegal Array Bounds" error
- */
-
- #ifndef NDEBUG
- #define ASSERT(EXP) {struct{char a[EXP];};}
- #else
- #define ASSERT(EXP)
- #endif NDEBUG
-
- /*
- ** Debugging Macros
- */
-
- #ifndef DA
- #define snap(format,value) \
- { \
- unsigned char text[256]; \
- sprintf ( &text, format, value ); \
- CtoPstr ( &text ); \
- DebugStr ( &text ); \
- }
-
- #else
- #define snap(format,value) \
- { \
- ParamText ( format, NULL, NULL, NULL ); \
- NoteAlert ( -15743, NULL ); \
- }
- #endif
-
- #ifdef NDEBUG
- #undef snap
- #define snap(format,value)
- #endif
-
-
- /* ******************************************************************************************** */
- /* * * */
- /* * The following are of dubious use... * */
- /* * * */
- /* ******************************************************************************************** */
-
- /*
- ** Pascal and PL/I Compatability
- */
-
- #define begin {
- #define end }
- #define then
-
-
- /* ******************************************************************************************** */
- /* * * */
- /* * End of Definitions * */
- /* * * */
- /* ******************************************************************************************** */
-
- #endif unix
-
- #define _standard_h_
- #endif _standard_h_
-